/*******************************************************************************
 * Copyright (c) 2000, 2005 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *     IBM Corporation - initial API and implementation
 *******************************************************************************/
package com.architexa.org.eclipse.gef;

import com.ibm.icu.text.DecimalFormat;
import com.ibm.icu.text.NumberFormat;

import org.eclipse.swt.widgets.Text;

/**
 * This is an internal class used for debugging
 * @deprecated in 3.1  This class will be removed in future releases.
 */
public final class GEF {

static final String TAB = "  ";//$NON-NLS-1$

static Text text;
static int msgCount;
static int tab;
static NumberFormat formatter = new DecimalFormat();

/**
 * @deprecated
 */
public static boolean DebugTools = false;
/**
 * @deprecated
 */
public static boolean DebugEvents = false;
/**
 * @deprecated
 */
public static boolean DebugEditParts = false;
/**
 * @deprecated
 */
public static boolean DebugPainting = false;
/**
 * @deprecated
 */
public static boolean DebugFeedback = false;
/**
 * @deprecated
 */
public static boolean GlobalDebug = false;
/**
 * @deprecated
 */
public static boolean DebugToolStates = false;
/**
 * @deprecated
 */
public static boolean DebugDND = false;

/**
 * Clears the trace console if active
 * @since 1.0
 */
public static void clearConsole() {
	if (text == null) return;
	text.setText("");//$NON-NLS-1$
}

/**
 * Sets a text control to be used as a console.
 * @since 1.0
 * @param textBox the text control for streaming
 */
public static void setConsole(Text textBox) {
	msgCount = 0;
	formatter.setMinimumIntegerDigits(2);
	formatter.setMaximumFractionDigits(0);
	text = textBox;
}

/**
 * decrements the tracing indentation
 * @since 2.0
 */
public static void debugPop() {
	tab--;
}

/**
 * Prints the given string to a trace window and increments indentation.
 * @since 2.0
 * @param heading the message describing the indented text to follow
 */
public static void debugPush(String heading) {
	debug(heading);
	tab++;
}

/**
 * Prints the given message to a trace window if available.
 * @since 1.0
 * @param message a debug message
 */
public static void debug(String message) {
	String lineNumber = formatter.format(new Long(msgCount++));
	msgCount %= 100;
	String indent = "";//$NON-NLS-1$
	for (int i = 0; i < tab; i++)
		indent += TAB;
	if (text != null)
		text.append('\n' + lineNumber + '\t' + indent + message);
}

}
